这题的思路:
简单循环枚举即可,因为数据量小。
主要的问题在于四舍五入。
枚举虽然看起来偷懒,但是在赛场上在数据以及时间空间限制允许的情况下,总比你跑数论好(省做题时间)。
我们知道1.5
、1.6
、1.7
、1.8
、1.9
、2.0
、2.1
、2.2
、2.3
、2.4
四舍五入都为2,我们可以将其扩大十倍,即15
、16
、17
、18
、19
、20
、21
、22
、23
、24
。
由于C++中的/
是整除,这样我们就可以判断当扩大后的数被整除后,与k*10的误差范围为-5~4时即可判断相等。
至于小数点后面第二位及以后的数其实对此影响不大,因为扩大十倍后15.00001
在整除中还是15
,24.999999
在整除中还是24
。
代码如下:
1 |
|